package cn.itcast.nems.studentrecord.dto.studentrecord;

import cn.itcast.nems.studentrecord.constant.ReferenceTypeEnum;
import cn.itcast.nems.studentrecord.enumeration.FundFlowPaymentTypeEnum;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;

@Data
public class StudentRecordFundFlowInfoDTO implements Serializable {
    private static final long serialVersionUID = -7273016973226347078L;

    /**
     * 学籍id
     */
    private String studentRecordId;
    
    /**
     * 业务日期;实际收支的发生日期
     */
    private String bizDate;
    
    /**
     * 参考单据类型;凭单类型：订单｜ORDER、转班｜TRANSFER、休学｜SUSPENSION、退学退费｜DROPOUT、退费｜REFUND、待定｜DELAY｜离线支付、OFFLINE_PAY
     */
    private ReferenceTypeEnum referenceType;
    
    /**
     * 参考单据ID
     */
    private String referenceId;
    
    /**
     * 参考单据行ID
     */
    private String referenceLineId;
    
    /**
     * 班级ID
     */
    private Integer clazzId;

    /**
     * 班级名称
     */
    private String clazzName;
    
    /**
     * 支付类型;枚举值：在线支付|ONLINE_PAY、离线支付｜OFFLINE_PAY、退费｜REFUND、退转|REFUND_TRANSFER
     */
    private FundFlowPaymentTypeEnum paymentType;
    /**
     * 支付单号;根据凭单类型不同。如果是在线支付则为支付平台内的支付子单号。如果是离线支付则为离线支付单行ID。
     */
    private String paymentNo;

    /**
     * 发生金额;本次发生金额：支付为正，退费为负。单位：分
     */
    private String amount;
    /**
     * 支付手续费;手续费：amount*charge_rata/100。单位：分。注：目前只有支付会存在费用。
     */
    private String charge;
    /**
     * 手续费费率。
     */
    private BigDecimal chargeRate;
    /**
     * 费用方式
     */
    private String paymentTypeName;

    private String schoolId;
    
    /**
     * 支付渠道账号
     */
    private String paymentAccountCode;

    /**
     * 支付渠道账号名称
     */
    private String paymentAccountName;

    /**
     * 备注
     */
    private String remark;
    
    /**
     * POS单号，沿用老EMS字段
     */
    private String posNo;
    
    /**
     * 贷款公司
     */
    private String financeCorporationName;
    
    /**
     * 退费方式
     */
    private String refundTypeName;

    /**
     * 创建时间
     */
    private String createdDatetime;
    /**
     * 经手人
     */
    private String createdBy;
    private String createdName;
    private String createdByName;
}
